package com.example.administrator.kotlintutorial

/**
 * Created by chensuilun on 2019/2/20.
 *
 * 伴生对象中定义的方法和包级别函数都可以用来替代 Java 中的 static
 * 1.伴生对象实际上生成的是静态内部类，并且使用 public  static final 字段来引用其实例
 * 2.包级别函数则是作为目标类（文件名+Kt）中静态方法
 */

//public final class Utils {
//    public static final Test Test = new Test();
//
//    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0018\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002\u00a2\u0006\u0002\u0010\u0002J\u000e\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u0006\u00a8\u0006\u0007"}, d2 = {"Lcom/example/administrator/kotlintutorial/Utils$Test;", "", "()V", "echo", "", "str", "", "app_debug"}, k = 1, mv = {1, 1, 13})
//    public static final class Test {
//        private Test() {
//        }
//
//        public /* synthetic */ Test(DefaultConstructorMarker $constructor_marker) {
//            this();
//        }
//
//        public final void echo(@NotNull String str) {
//            Intrinsics.checkParameterIsNotNull(str, "str");
//            System.out.println(str);
//        }
//    }
//}
class Utils {

    companion object Test {
        //        @JvmStatic  注解可以使得 Utils 类也生成了一个 echo 静态内部类，将伴生对象类中定义的实例方法和属性，添加到目标类中，并且以静态的形式存在
        fun echo(str: String) {
            println(str)
        }
    }
}

